SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[spPOFIdeal]  

@Cuise INT

AS

/*
Rutina de Planta Ideal
*/
SET NOCOUNT ON
DECLARE @Sub INT
DECLARE @Grilla INT
DECLARE @Funcion INT
DECLARE @Criterio INT
DECLARE @MnemoFuncion VARCHAR(20)
DECLARE @n INT
DECLARE @IdDivision INT
DECLARE @Curso VARCHAR(20)
DECLARE @Division VARCHAR(20)
DECLARE @MnemoTurno VARCHAR(20)
DECLARE @MnemoGrupoCarrera VARCHAR(20)
DECLARE @MnemoAsignatura VARCHAR(20)
DECLARE @Horas INT
DECLARE @Sum INT
DECLARE @Cupof Varchar(100)
SET @Sum = 0
SET @CUISE = 12679

set dateformat dmy

--Cursor por cada suborganizacion con Grilla
--Para probar usamos el POL del Ciudad de Santa Rosa
--Le cargamos lo necesario para testear...!!!
DECLARE Sub CURSOR FOR 
	SELECT IdSuborganizacion, SO.Grilla, O.Cuise
	FROM tb_Organizaciones O
	INNER JOIN tb_Suborganizaciones SO ON SO.Org = O.IdOrganizaciones 
	WHERE O.Cuise = @CUISE AND SO.Grilla IS NOT NULL

OPEN Sub
FETCH NEXT FROM Sub INTO @Sub, @Grilla, @Cuise

WHILE @@FETCH_STATUS = 0 BEGIN

	--Cursor por cada Funcion de la Grilla
	DECLARE Funcion CURSOR FOR 
		SELECT FG.IdFuncionGrilla, FG.Por, F.Mnemo, FG.Cantidad
		FROM tb_FuncionesDeGrilla FG
		INNER JOIN tb_GrillaFunciones GF ON GF.IdGrillaFuncion = FG.Grilla 
		INNER JOIN tb_FuncionesLUI F ON F.IdFuncion = FG.Funcion
		WHERE GF.IdGrillaFuncion = @Grilla
	
	OPEN Funcion
	FETCH NEXT FROM Funcion INTO @Funcion, @Criterio, @MnemoFuncion, @n

	WHILE @@FETCH_STATUS = 0 BEGIN
		
		--Si es 55 es por Plan de Estudios
		IF @Criterio = 55 BEGIN
			PRINT('.: PLAZAS GENERADAS SEGUN PLAN DE ESTUDIO :.')
			
			--Cursor por cada division/asignatura de la carrera de la division
			DECLARE Division CURSOR FOR 
				SELECT D.IdDivision, D.Curso, D.Division, T.Mnemo, GC.Mnemo,A.Mnemo, EC.Horas
				FROM tb_Divisiones D 
				INNER JOIN tb_GrupoDeCarreras GC ON GC.IdGrupoCarrera = D.GrupoCarreras
				INNER JOIN tb_Turnos T ON T.IdTurno = D.Turno
				INNER JOIN tb_RelGrupoCarrera_Carrera R ON R.IdGrupoCarrera = GC.IdGrupoCarrera
				INNER JOIN tb_Carreras C ON C.IdCarrera = R.IdCarrera
				INNER JOIN tb_EspaciosCurriculares EC ON EC.Carrera = C.IdCarrera
				INNER JOIN tb_Asignaturas A ON A.IdAsignatura = EC.Asignatura
				WHERE IdSubOrg = @Sub AND D.Curso IN('1','2','3','4','5','6','7','8','9')
			
			OPEN Division
			FETCH NEXT FROM Division INTO @IdDivision, @Curso, @Division, @MnemoTurno, @MnemoGrupoCarrera, @MnemoAsignatura, @Horas

			WHILE @@FETCH_STATUS = 0 BEGIN
				SET @Sum = @Sum + @Horas
				/*
				Cuando es HORAS los siguientes parametros tienen valores por defecto
					* Fecha Alta = 01/03/2003
					* Presupuesto = PP
				*/
				set @cupof =  CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-'+RTRIM(@MnemoGrupoCarrera) +'-'+RTRIM(@Curso)+'-'+RTRIM(@Division)+'-'+RTRIM(@MnemoFuncion)+'-'+RTRIM(@MnemoAsignatura)+'-'+@MnemoTurno+'-01/03/2003-PP-'+Cast(@Horas as varchar)
				Print  (CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-'+RTRIM(@MnemoGrupoCarrera) +'-'+RTRIM(@Curso)+'-'+RTRIM(@Division)+'-'+RTRIM(@MnemoFuncion)+'-'+RTRIM(@MnemoAsignatura)+'-'+@MnemoTurno+'-01/03/2003-PP-'+Cast(@Horas as varchar))
				
				--grabarPlaza
				FETCH NEXT FROM Division INTO @IdDivision,@Curso, @Division, @MnemoTurno, @MnemoGrupoCarrera, @MnemoAsignatura, @Horas
			END
			
			CLOSE Division
			DEALLOCATE Division
			
		END
		ELSE BEGIN
			/*
			Cuando es CARGO los siguientes parametros tienen valores por defecto
				* Modalidad = CM
				* Curso = 0
				* Division = 0 y AUTO_INCREMENT
				* Asignatura = NINGUNA
				* Turno = I
				* Fecha Alta = 01/03/2003
				* Presupuesto = PP
			*/
			--Un cargo por Escuela
			IF @Criterio = 28 BEGIN 
				Print(CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-CM-0-0-'+RTRIM(@MnemoFuncion)+'-NINGUNA-I-01/03/2004-PP-C')
			END
			--Con resultados inferiroes a la media y mas de 500 alumnos
			-- En donde chequeo esos datos!!!F
			IF @Criterio = 29 BEGIN
				Print(CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-CM-0-0-'+RTRIM(@MnemoFuncion)+'-NINGUNA-I-01/03/2004-PP-C')
			END
			--con algun laboratorio grande
			-- En donde chequeo esos datos!!!
			IF @Criterio = 30 BEGIN
				Print(CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-CM-0-0-'+RTRIM(@MnemoFuncion)+'-NINGUNA-I-01/03/2004-PP-C')
			END
			--Cantidad de cargos como de Turnos menos 1
			-- En donde chequeo esos datos!!!
			--Cambiar el turno del CUPOF por cada turno del Escuela
			IF @Criterio = 31 BEGIN
				Print(CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-CM-0-0-'+RTRIM(@MnemoFuncion)+'-NINGUNA-I-01/03/2004-PP-C')
			END
			--Un cargo cada n secciones
			-- Como cuento las secciones
			IF @Criterio = 32 BEGIN
				Print(CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-CM-0-0-'+RTRIM(@MnemoFuncion)+'-NINGUNA-I-01/03/2004-PP-C')
			END
			--Si la escuela tiene carrera docente o artistica
			-- En donde chequeo esos datos!!!
			IF @Criterio = 33 BEGIN
				Print(CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-CM-0-0-'+RTRIM(@MnemoFuncion)+'-NINGUNA-I-01/03/2004-PP-C')
			END
			--Si la escuela tiene una Biblioteca con mas 4000 recursos
			--En donde cuequeo esos datos!!!
			IF @Criterio = 34 BEGIN
				Print(CAST(@Cuise as Varchar)+'-'+CAST(@Sub as varchar)+'-CM-0-0-'+RTRIM(@MnemoFuncion)+'-NINGUNA-I-01/03/2004-PP-C')
			END
			IF @Criterio NOT IN(28,29,30,31,32,33,34) BEGIN
				print('Generar plazas como indique el criterio '+cast(@criterio as varchar))
			END
		END

		FETCH NEXT FROM Funcion INTO @Funcion, @Criterio, @MnemoFuncion, @n
	END

	CLOSE Funcion
	DEALLOCATE Funcion
	
	FETCH NEXT FROM Sub INTO @Sub, @Grilla, @Cuise
END

--PRINT(CAST(@Sum as varchar))

--grabarPlaza:
	/*
	INSERT INTO TB_POF (Division, Curso, Espacio, CUPOF
	VALUES  ()
	*/


CLOSE Sub
DEALLOCATE Sub
GO
